﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using com.citibank.sad.attool.processor;

namespace FinancePortal.Business.Infraestructure
{
    public class EmailService
    {
        public void EnviarEmail(IEnumerable<String> destinatarios, string assunto, string mensagem, IEnumerable<String> anexos = null)
        {
            if (destinatarios.IsNullOrEmpty())
                throw new ArgumentNullException("destinatarios");

            if (assunto.IsNullOrEmpty())
                throw new ArgumentNullException("assunto");

            if (mensagem.IsNullOrEmpty())
                throw new ArgumentNullException("mensagem");

            foreach (var destinatario in destinatarios)
            {
                this.EnviarEmail(destinatario, assunto, mensagem, anexos);
            }
        }

        private void EnviarEmail(string destinatario, string assunto, string mensagem, IEnumerable<String> anexos = null)
        {
            var parametros = new SortedList<string, object>
                                 {
                                     {Mail.KEY_FROM_NAME, "IT Financial Management Tool"},
                                     {Mail.KEY_FROM_ADDRESS, "itfmt@citi.com"},
                                     {Mail.KEY_TO_ADDRESS, destinatario},
                                     {Mail.KEY_SUBJECT, assunto},
                                     {Mail.KEY_BODY_FORMAT, "text"},
                                     {Mail.KEY_BODY_CONTENT, mensagem}
                                 };

            if (!anexos.IsNullOrEmpty())
            {
                var arquivos = anexos.ConvertAll(a => new FileInfo(a)).ToArray();

                parametros.Add(Mail.KEY_FILE_ATTACHMENT, arquivos);
            }

            Mail.send(parametros);
        }
    }
}
